//
//  MainTabBarController.swift
//  微博swift
//
//  Created by apple on 15/10/14.
//  Copyright © 2015年 apple. All rights reserved.
//

import UIKit

class MainTabBarController: UITabBarController {
    
    override func viewDidLoad() {

        super.viewDidLoad()
        //添加子控制器
        
//        print(tabBar.subviews) 只能打印出一个加号button,说明此时还没有tabBarItems
        addChildViewControllers() //toolBarItem必须先加上来,
        tabBar.addSubview(composeBtn)
    }
    
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

//        print(tabBar.subviews)此时才会创建tabBarItems
//        所以加号button是先tabBarItems加到tabBar上的,所以加号button在tabBarItems的下面
//        我们需要把它提到最前面来
        tabBar.bringSubviewToFront(composeBtn)
        
        }
    
    // MARK: 懒加载
    private lazy var composeBtn:UIButton = {//可封装
        let btn = UIButton()
        btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        btn.sizeToFit()
        
        let itemWidth = self.tabBar.bounds.width / 5
        // 这个方法的作用是让一个矩形(第一个参数),水平方向,垂直方向 两头 各压缩多少距离
        // 这里是 将self.tabBar.bounds 左右各向里压缩2 * (itemWidth - 1)距离,而垂直方向不变
        //这里减一是为了让这个ebutton大一点,而不至于点到占位的tabBarItem
        btn.frame = CGRectInset(self.tabBar.bounds, 2 * (itemWidth - 1), 0)
        
        btn.addTarget(self, action: "click", forControlEvents: UIControlEvents.TouchUpInside)
        return btn
    }()

    
    // MARK:-------加号按钮的点击
    @objc private func click(){
        
        let vc = ComposeViewController()
       
        vc.view.backgroundColor = UIColor.whiteColor()
        
        let navi = UINavigationController(rootViewController: vc)
        
        presentViewController(navi, animated: true, completion: nil)
    }
    
}


// MARK:设置UITabBarController界面
extension MainTabBarController
{
    
///  添加子控制器
    private func addChildViewControllers() {
        addChildViewController("首页", tableVC: HomeTableViewController(), normalImageName: "tabbar_home")
        addChildViewController("消息", tableVC: MessageTableViewController(),
            normalImageName: "tabbar_message_center")
//        添加一个占位的控制器,让tabBarItem上多一个地方出来,放置'+'按钮
        addChildViewController(UIViewController())
        addChildViewController("发现", tableVC: DiscoveryTableViewController(), normalImageName: "tabbar_discover")
        addChildViewController("我", tableVC: ProfileTableViewController(), normalImageName: "tabbar_profile")
    }
    private func addChildViewController(title:String, tableVC:UIViewController,normalImageName:String) {
        
        //设置了这个属性,那么navigationItem.title和tabBar.title都设置好了
        tableVC.title = title
        //因为tabBarItem是跟控制器有关联的,所以是tableVC的属性,而tabBar使tabBarController的属性
        tableVC.tabBarItem.image = UIImage(named: normalImageName)
        tabBar.tintColor = UIColor.orangeColor()
        //包装一个导航控制器
        let naviVC = UINavigationController(rootViewController: tableVC)
        addChildViewController(naviVC)
        
    }
}

